<?php
namespace App\Http\Controllers\Api\Portal;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use App\Http\Controllers\Api\Controller;
use App\Services\Portal\HomeService;
use App\Services\Portal\ArticleService;

class HomeController extends Controller
{

    /**
     * 门户：PC端头部 导航栏
     * for pc
     * @author gongm
     * @data 2018年2月5日
     *
     * @return { resp_msg : { msg_code : 200, msg_desc : 'success' }, resp_data : {} }
     *
     * @SWG\Get(path="/portal/navigations",
     * tags={"门户"},
     * summary="获取门户导航栏数据",
     * description="门户头部",
     * operationId="getNavigations",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="msg_code:200,msg_desc:success"),
     * )
     */
    public function getNavigations()
    {
        $data = HomeService::getMainNavListByDiscuz();

        return $this->getApiResponse($data);
    }

    /**
     * 门户：PC端底部 友情链接栏
     * for pc
     * @author gongm
     * @data 2018年2月5日
     *
     * @return { resp_msg : { msg_code : 200, msg_desc : 'success' }, resp_data : {} }
     *
     * @SWG\Get(path="/portal/links",
     * tags={"门户"},
     * summary="获取门户友情链接数据",
     * description="门户底部",
     * operationId="getlinks",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="msg_code:200,msg_desc:success"),
     * )
     */
    public function getLinks()
    {
        $data = HomeService::getLinksByDiscuz();

        return $this->getApiResponse($data);
    }

    /**
     * 门户：PC端底部 统计数据概览
     * for pc
     * @author gongm
     * @data 2018年2月5日
     *
     * @return { resp_msg : { msg_code : 200, msg_desc : 'success' }, resp_data : {} }
     *
     * @SWG\Get(path="/portal/overviews",
     * tags={"门户"},
     * summary="获取门户友情链接数据",
     * description="门户底部",
     * operationId="getOverviews",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="msg_code:200,msg_desc:success"),
     * )
     */
    public function getOverviews()
    {
        $data = HomeService::getOverviews();

        return $this->getApiResponse($data);
    }

    /**
     * 门户首页：Banner 列表
     *
     * @author gongm
     * @data 2018年2月5日
     *
     * @SWG\Get(path="/portal/home/banners",
     * tags={"门户-首页"},
     * summary="获取宣传图Banner列表",
     * description="顶部正中区域",
     * operationId="getBanners",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="code:20002,msg:获取数据成功"),
     * )
     */
    public function getBanners()
    {
        $data = HomeService::getBanners();

        return $this->getApiResponse($data);
    }

    /**
     * 社区资讯门户：推荐列表
     *
     * @author gongm
     * @data 2018年2月5日
     *
     * @SWG\Get(path="/portal/home/recommends",
     * tags={"门户-首页"},
     * summary="获取首页推荐列表",
     * description="首页正中区域",
     * operationId="getRecommends",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="code:20002,msg:获取数据成功"),
     * )
     */
    public function getRecommends()
    {
        $page = Input::get('page', 1);
        $pageSize = Input::get('page_size', 20);//默认每页20条

        // 先调用文章服务中的推荐文章列表方法作为首页推荐的列表，后续推荐系统1.0开发完成后，再转调推荐系统的相应接口
        $data = HomeService::getRecommends($page, $pageSize);
        //$data = RecommendService::getHomeRecommends($userID, $page, $pageSize);

        return $this->getApiResponse($data);
    }


    /**
     * 门户首页：文章分类
     *
     * @author gongm
     * @data 2018年2月24日
     *
     * @SWG\Get(path="/portal/home/categories",
     * tags={"门户-首页"},
     * summary="获取首页文章分类",
     * description="首页正中区域",
     * operationId="getCategories",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="code:20002,msg:获取数据成功"),
     * )
     */
    public function getCategories()
    {
        $data = HomeService::getCategories();

        return $this->getApiResponse($data);
    }

    /**
     * 门户首页：获取文章列表
     *
     * @author gongm
     * @data 2018年2月24日
     *
     * @SWG\Get(path="/portal/home/articles",
     * tags={"门户-首页"},
     * summary="获取首页文章列表",
     * description="首页正中区域",
     * operationId="getCategories",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="code:20002,msg:获取数据成功"),
     * )
     */
    public function getArticles()
    {
        $categoryID = Input::get('category', 1); // categoryID 默认为1 ，即获水产类全部文章
        $page = Input::get('page', 1); // 默认取第一页
        $pageSize = Input::get('page_size', 20); //$request->input('page_size', 20); //默认每页20条

        // 先调用首页服务中的 api 项目的文章数据接口，后续在2.0项目的文章服务上重新实现
        $data = HomeService::getArticles($categoryID, $page, $pageSize);
        //$data = ArticleService::getArticles($categoryID, $pageSize, $page);

        return $this->getApiResponse($data);
    }

    /**
     * 门户首页：供应列表
     *
     * @author gongm
     * @data 2018年3月1日
     *
     * @SWG\Get(path="/portal/home/supplies",
     * tags={"门户-首页"},
     * summary="获取供应列表",
     * description="侧边栏供应区域",
     * operationId="getSupplies",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="code:20002,msg:获取数据成功"),
     * )
     */
    public function getSupplies()
    {
        $data = HomeService::getSupplies();

        return $this->getApiResponse($data);
    }

    /**
     * 门户首页：求购列表
     *
     * @author gongm
     * @data 2018年3月1日
     *
     * @SWG\Get(path="/portal/home/demands",
     * tags={"门户-首页"},
     * summary="获取求购列表",
     * description="侧边栏求购区域",
     * operationId="getDemands",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="code:20002,msg:获取数据成功"),
     * )
     */
    public function getDemands()
    {
        $data = HomeService::getDemands();

        return $this->getApiResponse($data);
    }

    /**
     * 门户首页：求购列表
     *
     * @author gongm
     * @data 2018年3月1日
     *
     * @SWG\Get(path="/portal/home/questions",
     * tags={"门户-首页"},
     * summary="获取鱼病问题列表",
     * description="侧边栏鱼病问题区域",
     * operationId="getQuestions",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="code:20002,msg:获取数据成功"),
     * )
     */
    public function getQuestions()
    {
        $data = HomeService::getQuestions();

        return $this->getApiResponse($data);
    }

    /**
     * 门户首页：热门新闻和视频
     *
     * @author gongm
     * @data 2018年2月5日
     *
     * @SWG\Get(path="/portal/home/hots",
     * tags={"门户-首页"},
     * summary="获取热门新闻和视频，各返回前10条",
     * description="侧边栏热门新闻和视频区域",
     * operationId="getHots",
     * produces={"application/json"},
     * @SWG\Response(response="200", description="code:20002,msg:获取数据成功"),
     * )
     */
    public function getHots()
    {
        $data = HomeService::getHots();

        return $this->getApiResponse($data);
    }
}